To date, software applications for businesses have required significant development time and once built cannot be easily modified to adapt to changes in business needs. Given the length of the development cycle vis-à-vis the length of the business cycle, this almost always leads to software systems that are outdated the moment they are completed.
For example, in the insurance industry computer systems exist to administer insurance policies for large insurers. These large software systems took years to implement and are not flexible enough to evolve with the business. As a result, most insurance companies today have out-of-date and inflexible systems and are confronted with excessive costs and delays in introducing new technologies and maintaining legacy systems. For example, the cost of handling year 2000 issues in the insurance industry was exorbitant. Consequently, many insurance companies seek to free themselves of their legacy system overhead and replace them with web-based solutions that are easy to use, support multiple insurance products, and keep up with changes in the business.
An insurance executive who decides to address these issues and surveys similar projects recently undertaken by other insurance companies will find an inadequate value proposition. The planned cost for such a project ranges from $10,000,000 to $50,000,000 just for software, consulting, and personnel expenses. The planned time to complete the entire system is 2 to 4 years without any tangible result for about 18 months. The project requires input from a number of knowledgeable business staff that will typically need to be dedicated to the project for months or years. In addition, the project has a very high risk of failure. Most projects far exceed the planned cost and time. Some projects are terminated with no result. Those that are implemented often lack the functionality and flexibility initially envisioned, resulting in yet another “legacy” system.
In an attempt to deal with their past inability to address the issues of speed, cost, and flexibility, software vendors have recently been emphasizing the “componentized” nature of their software. In theory, component-based software architectures enable customers to develop systems quickly by reusing components, ultimately reducing system maintenance costs.
While the advantages of this component rationale have been highly touted, the expected benefits have yet to manifest themselves. Current projects utilizing even the newest software products marketed in this manner are still facing implementation schedules of two to four years or more. In reality, considerable programming effort is required to implement component-based systems to coordinate the functionality of all the components. Components may be reused but the custom logic that binds them into an operational system must still be specified and coded requiring additional consulting and personnel expenses. Therefore, by itself componentized software is not a solution to the above problem.
One attempted solution to the problem has been described in U.S. Pat. No. 6,016,394, which discloses a method and system for database application software creation with minimal programming. This type of system consists of a surrogate environment, which is used to capture the requirements for the target application; a code generator, which synthesizes the code and creates the database for the target application based on the information from the surrogate environment, and the target application itself.
However, the use of this approach introduces a large overhead and imposes certain restrictions that are idiosyncratic to each code synthesizer. Most insurance companies prefer a system that does not use a code synthesizer.
The present invention is therefore directed to the problem of developing a method and apparatus for building software based systems for business solutions, which method and apparatus enable these software-based systems to be developed and fielded rapidly while providing the ability to accept modifications and new requirements in short order, yet reduce the associated costs of development and maintenance while avoiding the use of a code synthesizer.